package com.example.dangdangbackend.service;

import com.example.dangdangbackend.DTO.AddCategoryDTO;
import com.example.dangdangbackend.VO.CategoryFirstVO;
import com.example.dangdangbackend.VO.CategorySecondVO;
import com.example.dangdangbackend.VO.CategoryVO;
import com.example.dangdangbackend.entity.CategoryFirst;
import com.example.dangdangbackend.entity.CategorySecond;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface CategoryService {
    /**
     * 查询所有的一级标题
     * @return
     */
    List<String> selectFirst();

    /**
     * 查询树状结构的所有标题
     * @return
     */
    List<CategoryFirst> selectAllCategory();

    /**
     * 添加一级标题
     * @param categoryFirstName
     */
    void addCategoryFirst(String categoryFirstName);

    /**
     * 添加二级标题
     * @param addCategoryDTO
     */
    void addCategorySecond(AddCategoryDTO addCategoryDTO);

    /**
     * 一级标题是否已经存在
     * @param categoryFirstName
     * @return
     */
    boolean ifFirstNameExist(String categoryFirstName);

    /**
     * 二级标题是否存在
     * @param categorySecondName
     * @return
     */
    boolean ifSecondNameExist(String categorySecondName);

    /**
     * 获取所有的一级标题
     * @return
     */
    List<CategoryFirstVO> selectAllFirst();

    List<CategorySecondVO> selectAllSecond();

    /**
     * 分级分页查询
     * @return
     */
    PageInfo selectByPage(int pageNum,int pageSize);

    /**
     * 删除一级标题
     * @param categoryId
     */
    void deleteFirst(int categoryId);

    /**
     * 删除二级标题
     * @param categoryId
     */
    void deleteSecond(int categoryId);

    /**
     * 查询当前一级标题下的所有二级标题数量
     * @param categoryId
     * @return
     */
    int selectCount(int categoryId);
}
